home *** CD-ROM | disk | FTP | other *** search
- Ashton Tate Developer's Release of dBaseIII
- (also known as dBaseIII Version 1.2)
-
- It is important to note that dBase III 1.2 enhancements do not
- work on version 1.0 or 1.1...these enhancements(new commands and
- functions) only work on machines running dBaseIII 1.2 or dBrun.
-
- Released on July 1,1985 and includes the following features:
- Developer's version of dBaseIII with 16 new commands and
- about 30 new functions...listed below.
- Commands>>
- ********Debugging Tools***********
- History is a new concept to dBaseIII...but for
- those of you who use DOSEDIT or CED in DOS,you have long ago
- appreciated the ability to recall and edit commands at the DOS
- prompt and reenter them...especially when all you left out was a
- "t" in the filename you wanted to copy.
- History is always active...to activate it just
- press esc and bingo you can see a 3 row window open on your
- screen at the prompt...and by pressing the up or down arrow key
- you can have access to the last 20 commands you have entered...
- alter or edit or just reenter them...to get back to the lovely
- dot prompt press another esc...but you can manipulate HISTORY
- with some special commands...
- * SET HISTORY ON/OFF ... usually is off ...
- but when you turn it on (at the prompt or in a .prg) the editing
- becomes a full screen project...instead of the 3 row window.
- * SET HISTORY TO <expN> ... will not only erase
- all the currently stored commands but will allow you to increase
- or decrease the number of commands stored from 0 to 16,000(the
- latter will definately effect memory available...you can figure
- out how much by by adding 9 bytes to each command to be stored).
- * SET DOHISTORY ON/OFF ... usually is off ...
- when it is turned on,it will capture the last 20 lines of your
- command files...to be edited or reentered.
- * LIST HISTORY or DISPLAY HISTORY do pretty
- much like what they say...either list or display the currently
- stored history to screen or printer.
- By the way,whenever dBaseIII encounters an
- error or your left or right(depending on your keyboard)pinky
- finds itself frantically pressing escape while executing a
- command file no longer gives you the choice of just cancelling
- the program (you know,the good old "Need Help?" -NEVER,EVER- or
- the ever so lovely "Terminate command file?(Y/N)" but now has a
- new prompt "What now - Cancel,Ignore, or Suspend?(C,I,S)" ....
- pressing enter will get you a Cancel, pressing "I" will get the
- program running again but pressing "S" will get you into a new
- realm of debugging...Suspend mode (or as we have called it the
- Twilight mode)
- * SUSPEND ... can be executed from the command
- file too ... but once you are here,you can edit (from history)
- and restart the program by entering RESUME(anther new command!).
- Take note though any changes made during SUSPEND...need to be
- reentered and saved on your text editor if you want them to be
- permanently a part of your command file.
- ********Assembly Language Interface********
- You can now LOAD up to five .bin or .com files
- (each can be up to 32,000 bytes) into memory,CALL it into action
- with an optional memory variable and then RELEASE MODULE when you
- are done with it...to allow other Modules to be loaded...dBaseIII
- treats the loaded module as a procedure ... each module must
- follow certain programming rules but this should be a helpful
- tool for programmers.
- ********Numeric Overflow***********
- No longer returns a bunch of ***** but now
- shows an exponential format....which may or may not be a relief
- to your clients....mine will still call and ask if they are
- supposed to press Ctrl-Alt-Del now...
- *******Numeric Accuracy************
- If some of you were wondering if you were
- loosing your marbles because the formula looked right and the
- calculator said "That's right!" but your program kept saying
- "nah"...or you are a rare breed who said having accurate numeric
- operations was important...good news...so does dBaseIII 1.2
- *******Date Formatting**************
- Well,if you needed it,you got it...new date
- formatting...in a simple format SET DATE <AMERICAN/ANSI/BRITISH/
- ITALIAN/FRENCH/GERMAN>...and that's all there is to it.
- A somewhat more applicable application for me
- is the new SET CENTURY ON/OFF ... with it on you can show the
- century...for example ... today is July 4th,1985 ... and you know
- that dBaseIII says that's 07/04/85 ... and if you set century on
- ... 07/04/1985
- *******Keyboard Buffer Control*******
- dBaseIII 1.2 allows you to set the type ahead
- buffer,just like the big boy programmers!...The default is 20
- characters..but if you want a buffer of 32,000(for those speed
- typists in your secretary pool...),you got it...but a better
- application could be setting it to 0...so they have to sit still
- and read what is going on...the command is SET TYPEAHEAD TO
- (<expN>)
- Well,if you got used to CLEAR,CLEAR ALL,CLEAR
- GETS,CLEAR MEMORY...get ready for CLEAR TYPEAHEAD...it does what
- the command implies,clears out the typeahead buffer(no matter
- what it's set for in the SET TYPEAHEAD buffer)..we use it for our
- Copyright screens and error messages and editing screens...so
- they cannot just buzz by them without taking some notice of what
- is taking place.
- *********EVENT PROCESSING************
- At least, that's what A-T calls these three new
- commands...very useful too I might add...I bet you'll have no
- trouble finding valuable uses for these in your applications...
- The first is ON ERROR,and it works like this...
- in your command file,you put the command ON ERROR DO Whoops...
- when dBase encounters an error condition,(you know the impossible
- of impossibles ever coming true...since all your software is bug
- free)instead of freaking your customer out,it will activate
- Whoops (which may include an apology and a calling up of their
- still favorite programmer ... or as we do request they turn on
- their printer...still no test for that ... and call up a PrtSc
- routine to record the offending part of the program)and return
- control of the program to your customer.
- The second one is ON ESCAPE,and it is a little
- different in that it allows you to control the program when and
- if the Esc is pressed during program operation... a little more
- effective than just setting it off. We already use it for a
- printer pause in our mail merge/label program(to allow them to
- reload paper,adjust the paper if it got gnarled up)...it works
- like this ON ESCAPE DO Pausing...so if they press Esc,they will
- be taken to the module Pausing to make a choice...rather than get
- the ever so lovely "Terminate command file?(Y/N)" if you happen
- to give them the option to escape in times of distress.
- The last one is ON KEY...which is really
- flexible, you have the ability to test for any key being pressed
- and give your customer the option to quit or resume with the
- program operation. ON KEY DO Sure...where Sure could request a
- verification to continue or abort...
-
- ****Database manipulation*******
-
- * SET MEMOWIDTH TO(allows adjustment of output
- columns of memo fields...printing or display)
- ex. as a default,1.1 let it be 50...so a SET
- MEMOWIDTH TO 25 would crunch it up to have a column width of 25,
- the SET MARGIN TO 8 would only affect the printer...not the
- display.
- * SET ORDER TO (set controlling index file
- order w/o closing,reopening .ndx file)
- ex. USE Rentals Index Client,Address,Rate
- (obviously Client is the controlling .ndx
- file)
- SET ORDER TO 2 (changes the controlling
- .ndx file to be Address... TO 3 would be Rate)
- *
-
- >> Functions
-
- ********Functions********************
- A whole mouth watering bunch of them...some
- you'll find indespensible and others you'll make use of now and
- again...both point to the fact, that A-T is listening to it's
- programming community and making changes.
-
- <<<<Input functions>>>>>>
- These are probably some of the most requested
- changes...and extremely useful...my old workarounds were dogs
- compared to these simple functions...enjoy them.
- * INKEY() ... allows you to determine which key
- or keys the customer last pressed and take appropriate action...
- as you know,ever key has a corresponding ASCII code value...
- that's what you test for... and act on it...so now you can use
- the numeric key pad(cursor keys) and allow some creative uses in
- editing,entry,screen displays,etc.
- * READKEY() is like INKEY() but there is some
- crucial differences...it is like INKEY by returning that same
- ASCII code...but you use it during full-screen commands(you know
- what they are...APPEND,EDIT,etc)...and it also allows you to know
- if any data on that screen was changed.
-
- <<<character type functions>>>
-
- * LEFT ... Substring search from the first part
- of a character string.
- * LTRIM ... removes all leading blanks to your
- character expression.
- * REPLICATE ... one of my favorites ...
- already...REPLICATE("*",25) will produce a string of 25 * at the
- current position...it's really great to use in box drawing on
- your screen... or to simulate a bar graph(example in dB3 manual)
- * RIGHT ... substring search starts from the
- farthest right character(opposite of LEFT...makes sense).
- * STUFF ... what every programming language
- should have a STUFF command ... actually this can be quite handy
- ... it allows you to change any part of a character string, with-
- out the need to reconstruct the entire string. Hard to visualize?
- i.e. STUFF([abc],2,1,[xyz]) will give you axyzc ... the syntax is
- STUFF(<expC1>,<start position>,<number of characters>,<expC2>)
- * TRANSFORM ...allows you to present a
- formatted PICTURE of a characters/numbers utilizing any of the
- following...?,??,DISPLAY,LABEL,LIST,REPORT...syntax as follows:
- suppose you had a .dbf and the first record's
- C_name was Ashtot
- . DISPLAY TRANSFORM(C_name,[@R X X X X X X])
- . A s h t o t
- suppose you had a yearly income of $23,500 from
- Ashtot.
- . DISPLAY TRANSFROM(Yr_income,[###,###.##]
- . 23,500.00
-
- <<<Numeric Type>>>
-
- * ABS ... seems pretty obvious(as the other two
- are)...gives you the absolute value of a number...which means you
- don't get a negative value ... even if you say ? ABS(30-25),
- results in 5 ... has no different results saying ? ABS(25-30).
- * MAX ... will give the maximum value of two
- numeric expressions
- * MIN ... does the exact opposite ... the
- minimum of two numeric expressions
- * MOD ... short for modulus...will allow you to
- determine the fraction result of two numbers ... the first number
- is limited and divided by the second number...
- . ? MOD(133,36)
- . 25
- . ? MOD(36,133)
- . 36
- . ? MOD(12,10)
- . 2
- . ? MOD(10,12)
- . 10
- . ? MOD(12,-10)
- . -8
-
- <<<<Testing Functions>>>>
-
- These are some of the ones that I really have
- been anxiously waiting for since dBaseII was introduced...I hope
- you'll also see alot of program controlling value in these
- functions.
- * DBF() will return the name of database of the
- currently selected work area
- * NDX() will return the indexes open in the
- currently selected work area
- * DISKSPACE() will return the amount of
- diskspace available on any given drive
- * FIELD() will return all the field names of
- the current dbf ... FIELD(4) will give you the name of the fourth
- field in the current dbf
- * FOUND() returns a logical variable ... in
- response to a previous FIND,SEEK,LOCATE,CONTINUE...a quicker
- access to results than EOF() test,especially on a large dbf
- * IFF(<expL>,<exp1>,<exp2>) .... a conditional
- expression ... w/o IF ELSE ENDIF ... it works like this... if the
- expL test returns true,then do exp1 otherwise do exp2...the IFF
- statement can be used from the prompt,command files,Report forms
- or Labels.
- * ISALPHA(<expC>)...will evaluate the expC to
- see if expC begins with an Character,rather than a number... it
- returns a logical .T. or .F.
- * ISCOLOR()... evaluates for a color monitor
- ... and returns a .T. or .F. ... so you can manipulate the screen
- appropriately for the monitor present.
- * ISLOWER(<expC>) ... returns a .T. or a .F.
- after evaluating the expC for the initial character as lower
-
- * ISUPPER(<expC>) ... just the opposite of
- above ... checking for first letter of expC to be upper and
- return a .T. or .F.
- * LUPDATE() ... excellent tool for autoback ups
- ... returns the date of the last update of the dbf in use.
- * RECCOUNT() ... gives you the fastest possible
- way of counting the number of records in the dbf in use.
- * RECSIZE() ... determines the size of a record
- in the currently used dbf
-
- <<<<Identification Functions>>>>
-
- * FKLABEL(<expN>...is a function to allow you
- to set function keys on computers that have use non-numeric
- labels as identification for their function keys.
- * FKMAX() ... will tell you how many function
- keys are on a particular computer... and then using FKLABEL...
- redefine them for your programs needs.
- * GETENV(<expC>) .. will return specific
- operating system environmental information. Example:
- ? GETENV("PATH")
- . c:\brief;c:\dos;c:\
- * OS ... returns name of the operating system
- .. footsteps towards bigger and better things to come?
- * VERSION ... returns what version of dBaseIII
- you are running in today...in case you want to test for specific
- versions,since your commands from dBase III 1.2 will not run on
- 1.1 or 1.0.
-
-
- Well,that about does it for this quick and
- dirty review...hope it helps you out some...if you have any
- questions...call Ashton-Tate...or leave me a note on this RBBS...
- I will try and answer what questions you have...
- -----------------------------------------------------------------
- Review by: Randy Wallin, West Palm Beach, FL -07/14/85-
-
- First transmitted to the SMUG BBS, 301-963-5249, -07/14/85-
- -----------------------------------------------------------------
-